Aufgabenstellung
Wir sind Mitarbeiter eines fiktiven großen Automobilkonzerns, der unter zwei Automobilmarken, “OEM1” und “OEM2”, mehrere Fahrzeugtypen herstellt. Die Zulieferkette setzt sich aus zwei Instanzen zusammen: den Teilelieferanten und den Komponentenlieferanten. Das Produktionswerk verbaut die Komponenten in die jeweiligen Fahrzeuge. Momentan versuchen die Automobilhersteller, trotz negativer Berichterstattung über Dieselfahrzeuge, Kunden für Autos mit Dieselmotoren zu gewinnen. Ein oft verwendetes Argument ist die Langlebigkeit von Dieselmotoren, die deutlich größer als die Lebensdauer der Benzinmotoren sein soll. Das Management beauftragt Sie, diese Behauptung zu überprüfen um mit der Aussage künftig werben zu können. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren. Ermitteln Sie den Zeitraum zwischen Zulassungsdatum und Fehlerdatum aller Fahrzeuge, getrennt nach Motorisierungsart und Fahrzeugart. Visualisieren Sie Ihre Ergebnisse entsprechend Ihrer Zielgruppe. Ermöglichen Sie einen Vergleich zwischen den Fahrzeugtypen.
Visualisierung
A: Ein Balkendiagramm, das die relativen Fehlerhäufigkeiten aller Motoren, getrennt in Benzin- und Dieselantrieb, darstellt. Das Diagramm muss interaktive Elemente enthalten. Der Produktionszeitraum der Fahrzeuge muss durch den Nutzer variabel eingrenzbar sein.
B: Pro Fahrzeugtyp jeweils einen Boxplot für Varianten mit Dieselmotor und einen Boxplot für Varianten mit Benzinmotor. Die Boxplots beziehen sich dabei auf das Zeitintervall zwischen Zulassung eines Fahrzeugs und Fehlerdatum der Fahrzeuge. Wichtige Kennzahlen müssen interaktiv ablesbar sein. Die Fahrzeugtypen sollen an- und abwählbar sein. Alle Fahrzeugtypen von OEM1 und OEM2 sollen mit einem Klick an- und abwählbar sein. Der für das Balkendiagramm ausgewählte Produktionszeitraum soll auch hier angewendet werden.
if(!require(plotly)){
install.packages("plotly")
}
library(plotly)
if(!require(shinyWidgets)){
install.packages("shinyWidgets")
}
library(shinyWidgets)
if(!require(shinythemes)){
install.packages("shinythemes")
}
library(shinythemes)
if(!require(DT)){
install.packages("DT")
}
library(DT)
if(!require(data.table)){
install.packages("data.table")
# für die Verwendung von fread()
library(data.table)
}
if(!require(tidyverse)){
install.packages("tidyverse")
library(tidyverse)
}
if(!require(shiny)){
install.packages("shiny")
library(shiny)
}
if(!require(plyr)){
install.packages("plyr")
require(plyr)
}
if(!require(lubridate)){
install.packages("lubridate")
require(lubridate)
}
if(!require(eply)) {
install.packages("eply")
require(eply)
}
if(!require(survival)) {
install.packages("survival")
require(survival)
}
if(!require(survminer)) {
install.packages("survminer")
require(survminer)
}
Aus die Aufgabenstellung gibt es solche Annahme: \[ Lebensdauer= Fehlerdatum - Zulassungsdatum \]
Zuerst wurde/wird es analysiert, welche daten relevant sind. Dieses Verfahren hängt von den folgenden drei Aufgaben und weiteren detallierten Anforderungen des Inhalts und der Eigenschaften der Shiny-Applikation. Darüber hinaus hängen die relevanten Daten mit den Dateien zusammen, die nicht nur die unterschiedlichen Motorentypen als ganze Systeme sondern auch die Einzelteile dieser Motoren beschreiben.
Die für die Analyse nötwendigen Parameter sind wie folgend aufgelistet :
| Nr. | Faktoren | directory name | file name | Spezifikation |
|---|---|---|---|---|
| 1 | Zulassungsdatum | “./Data/Zulassungen” | “Zulassungen_alle_Fahrzeuge.csv” | |
| 2 | Fehlerdatum der Fahrzeuge | “./Data/Fahrzeug” | “Fahrzeuge_OEM1_Typ11.csv” | Typ 11 |
| 3 | “Fahrzeuge_OEM1_Typ12.csv” | Typ 12 | ||
| 4 | “Fahrzeuge_OEM2_Typ21.csv” | Typ 21 | ||
| 5 | “Fahrzeuge_OEM2_Typ22.csv” | Typ 22 | ||
| 6 | Motoren der Fahrzeuge | “./Data/Fahrzeug” | “Bestandteile_Fahrzeuge_OEM1_Typ11.csv” | Typ 11 |
| 7 | “Bestandteile_Fahrzeuge_OEM1_Typ12.csv” | Typ 12 | ||
| 8 | “Bestandteile_Fahrzeuge_OEM2_Typ21.csv” | Typ 21 | ||
| 9 | “Bestandteile_Fahrzeuge_OEM2_Typ22.csv” | Typ 22 | ||
| 10 | Fehlerdatum der Motoren | “./Data/Komponente” | “Komponente_K1BE1.csv” | |
| 11 | “Komponente_K1BE2.csv” | |||
| 12 | “Komponente_K1DI1.csv” | |||
| 13 | “Komponente_K1DI2.txt” | |||
| 14 | Bestandteile der Motoren | “./Data/Komponente” | “Bestandteile_Komponente_K1BE1.csv” | |
| 15 | “Bestandteile_Komponente_K1BE2.csv” | |||
| 16 | “Bestandteile_Komponente_K1DI1.csv” | |||
| 17 | “Bestandteile_Komponente_K1DI2.csv” | |||
| 18-28 | Einzelteile der Motoren | “./Data/Einzelteile” | “Einzelteil_T0X.txt” | X = 01 bis 10 |
Einzelteile 01 bis 10
Obwohl es 38 Einzelteile gibt, werden nur die Dateien mit Data zu den Einzelteilen 1-10 eingelesen, weil sie die Bestandteile der unterschiedlichen Motoren sind. Die Dateien, die ausführliche Informationen zum Einzelteil 1, 2, 3, 7 und 9 enthalten, haben so ein Format, dass es keine entsprechende Funktion gibt, die nach dem Einlesen unmittelbar aus dem original Format eine übersichtliche Struktur erzeugen würde. Deswegen werden die Dateien auf die folgende Weise modifiziert. Die Data in der Dateien werden in übersichtliche Zeile nach der Analysierung ihrer Struktur organisiert und die Field Parameters werden simplifiziert, was es ermöglicht, die Dateien durch eine Funktion wie Fread einzulesen, um eine Data Frame zu erzeugen.
Einzelteil 01
# die Daten im Einzelteil_T01.txt habe fogende Merkmal:
# -die 2. Spalt von Oberservation ist überschüssig , 3. Spalt ist die echte ID_T01
# -Trennzeichen zwischen Spalten ist " | | " , und in ASCII(hex) ist \x20\x7c\x20\x7c\x20
# -Trennzeichen zwischen Zeilen ist " "(einzel Leerzeichen) und in ASCII(hex) ist \x20
#
#Fehler :
# -Zeichen "Fahrleistung" und "A" ist Bestandteil von Datensatz (NA), bitte vermeiden sie als Pattern zu nutzen
# -bei ersetzen durch "str_replace_all" hast du falsch Pattern genutzt. einstellige Pipeline "|" bedeutet logische operation "Oder", das Zeichen "\" kann wörtliche Bedeutung einer Stelle nutzen. deswegen die richtige Format von " | | "ist " \\| \\| "
Einzelteil_T01_roh <- read_file("Data/Einzelteil/Einzelteil_T01.txt") %>%
str_replace_all(" \\| \\| " , ",") %>%
str_replace_all(" ", "\n")%>%
fread()
Einzelteil 02
Einzelteil_T02_roh <- read_file("Data/Einzelteil/Einzelteil_T02.txt") %>%
str_replace_all("\t","\n") %>%
str_replace_all(" ",",") %>%
fread()
Einzelteil 03
# die unsichtbare Zeichen hat ASCII-Code \x0b ,ist vertical tab
# das reserviert Zeichen "|" soll interperiert als normaler Zeichen
Einzelteil_T03_roh <- read_file("Data/Einzelteil/Einzelteil_T03.txt") %>%
str_replace_all("\\|",",") %>%
str_replace_all("\x0b","\n") %>%
fread()
Einzelteil 04 - 06
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Einzelteil_T04_roh <- fread("Data/Einzelteil/Einzelteil_T04.csv")
Einzelteil_T05_roh <- fread("Data/Einzelteil/Einzelteil_T05.csv")
Einzelteil_T06_roh <- fread("Data/Einzelteil/Einzelteil_T06.csv")
Einzelteil 07
# Trennzeich zwischen Zeilen korrigiert werden
Einzelteil_T07_roh <- read_file("Data/Einzelteil/Einzelteil_T07.txt") %>%
str_replace_all("\"\"","\"\n\"") %>%
fread(sep="\t")
Einzelteil 08
Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.
Einzelteil_T08_roh <- fread("Data/Einzelteil/Einzelteil_T08.csv")
Einzelteil 09
#\v für ASCII-Code \x0b
Einzelteil_T09_roh <- read_file("Data/Einzelteil/Einzelteil_T09.txt") %>%
str_replace_all("\v","\n") %>%
fread(sep="\\")
Einzelteil 10
Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.
Einzelteil_T10_roh <- fread("Data/Einzelteil/Einzelteil_T10.csv")
Fahrzeuge und ihre Bestandteile
Fahrzeug 11
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Fahrzeuge_OEM1_Typ11_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM1_Typ11.csv")
Bestandteile_Fahrzeuge_OEM1_Typ11_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM1_Typ11.csv")
Fahrzeug 12
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Fahrzeuge_OEM1_Typ12_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM1_Typ12.csv")
Bestandteile_Fahrzeuge_OEM1_Typ12_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM1_Typ12.csv")
Fahrzeug 21
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Fahrzeuge_OEM2_Typ21_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM2_Typ21.csv")
Bestandteile_Fahrzeuge_OEM2_Typ21_roh <- read_csv2("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM2_Typ21.csv")
Fahrzeug 22
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Fahrzeuge_OEM2_Typ22_roh <- fread("Data/Fahrzeug/Fahrzeuge_OEM2_Typ22.csv")
Bestandteile_Fahrzeuge_OEM2_Typ22_roh <- fread("Data/Fahrzeug/Bestandteile_Fahrzeuge_OEM2_Typ22.csv")
Komponente(Motoren) und ihre Bestandteile
Motor K1BE1
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Komponente_K1BE1_roh <- fread("Data/Komponente/Komponente_K1BE1.csv")
Bestandteile_Komponente_K1BE1_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1BE1.csv")
Motor K1BE2
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Komponente_K1BE2_roh <- fread("Data/Komponente/Komponente_K1BE2.csv")
Bestandteile_Komponente_K1BE2_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1BE2.csv")
Motor K1DI1
Dank des Formats dieser Dateien können sie einfach durch fread eingelesen werden.
Komponente_K1DI1_roh <- fread("Data/Komponente/Komponente_K1DI1.csv")
Bestandteile_Komponente_K1DI1_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1DI1.csv")
Motor K1DI2
Folgende Datei wird so modifiziert, dass eine einlesbare Struktur generiert wird, mit der eine Funktion wie Fread eine Data Frame erstellen kann.
#Spalte V1 ist wiederholend zu X1
Komponente_K1DI2_roh <- read_file("Data/Komponente/Komponente_K1DI2.txt") %>%
str_replace_all("\t","\n") %>%
fread(sep="\\")
Dank des Formats folgender Datei kann sie einfach durch fread eingelesen werden.
Bestandteile_Komponente_K1DI2_roh <- read_csv2("Data/Komponente/Bestandteile_Komponente_K1DI2.csv")
Zulassungen
Dank des Formats dieser Datei kann sie einfach durch fread eingelesen werden.
Zulassungen_alle_Fahrzeuge_roh <- read_csv2("Data/Zulassungen/Zulassungen_alle_Fahrzeuge.csv")
Die durch die Importierung resultierenden Datensätze enthalten mehrere Variablen, die völlig irrelevant bezüglich des Zieles der CaseStudy sind, so wie Spalten, die nach der Importierung generiert wurden, die überhaupt keine Information haben. Entsprechend werden diese Variablen und Spalten entfernt und das Format der relevanten Variablen geändert, falls notwendig.
Die Tabellen aller in Motor verbauten Teilen weisen zwei unterschiedliche merkmale auf:
Betroffend sind Einzelteile: T01,T02, T05 und T09
str(Einzelteil_T01_roh)
## Classes 'data.table' and 'data.frame': 3204104 obs. of 23 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 660 661 662 663 664 665 666 667 668 669 ...
## $ ID_T01.x : chr "1-201-2011-247" "1-201-2011-429" "1-201-2011-363" "1-201-2011-30" ...
## $ Produktionsdatum.x : chr "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
## $ Herstellernummer.x : int 201 201 201 201 201 201 201 201 201 201 ...
## $ Werksnummer.x : int 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
## $ Fehlerhaft.x : int 0 0 1 0 1 0 0 1 1 0 ...
## $ Fehlerhaft_Datum.x : chr NA NA "2009-09-30" NA ...
## $ Fehlerhaft_Fahrleistung.x: int 0 0 12983 0 12983 0 0 12983 12935 0 ...
## $ ID_T01.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: num NA NA NA NA NA NA NA NA NA NA ...
## $ ID_T01 : chr NA NA NA NA ...
## $ Produktionsdatum : chr NA NA NA NA ...
## $ Herstellernummer : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : num NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T01_roh)
## V1 X1 ID_T01.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:3204104 Length:3204104
## 1st Qu.: 801027 1st Qu.: 801027 Class :character Class :character
## Median :1602052 Median :1602052 Mode :character Mode :character
## Mean :1602052 Mean :1602052
## 3rd Qu.:2403078 3rd Qu.:2403078
## Max. :3204104 Max. :3204104
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :201 Min. :2011 Min. :0.0 Length:3204104
## 1st Qu.:201 1st Qu.:2011 1st Qu.:0.0 Class :character
## Median :201 Median :2011 Median :0.0 Mode :character
## Mean :201 Mean :2011 Mean :0.2
## 3rd Qu.:201 3rd Qu.:2011 3rd Qu.:0.0
## Max. :201 Max. :2011 Max. :1.0
## NA's :1922462 NA's :1922462 NA's :1922462
## Fehlerhaft_Fahrleistung.x ID_T01.y Produktionsdatum.y
## Min. : 0 Length:3204104 Length:3204104
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 2819
## 3rd Qu.: 0
## Max. :149790
## NA's :1922462
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :202 Min. :2021 Min. :0.0 Length:3204104
## 1st Qu.:202 1st Qu.:2021 1st Qu.:0.0 Class :character
## Median :202 Median :2021 Median :0.0 Mode :character
## Mean :202 Mean :2021 Mean :0.2
## 3rd Qu.:202 3rd Qu.:2021 3rd Qu.:0.0
## Max. :202 Max. :2021 Max. :1.0
## NA's :1922462 NA's :1922462 NA's :1922462
## Fehlerhaft_Fahrleistung.y ID_T01 Produktionsdatum
## Min. : 0 Length:3204104 Length:3204104
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 6537
## 3rd Qu.: 0
## Max. :227423
## NA's :1922462
## Herstellernummer Werksnummer Fehlerhaft Fehlerhaft_Datum
## Min. :204 Min. :2044 Min. :0.0 Length:3204104
## 1st Qu.:204 1st Qu.:2044 1st Qu.:0.0 Class :character
## Median :204 Median :2044 Median :0.0 Mode :character
## Mean :204 Mean :2044 Mean :0.2
## 3rd Qu.:204 3rd Qu.:2044 3rd Qu.:0.0
## Max. :204 Max. :2044 Max. :1.0
## NA's :2563284 NA's :2563284 NA's :2563284
## Fehlerhaft_Fahrleistung
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 6546
## 3rd Qu.: 0
## Max. :226953
## NA's :2563284
str(Einzelteil_T02_roh)
## Classes 'data.table' and 'data.frame': 3204104 obs. of 16 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 4 5 9 17 19 22 23 27 33 38 ...
## $ ID_T02.x : chr "2-201-2011-239" "2-201-2011-304" "2-201-2011-125" "2-201-2011-55" ...
## $ Produktionsdatum.x : chr "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
## $ Herstellernummer.x : int 201 201 201 201 201 201 201 201 201 201 ...
## $ Werksnummer.x : int 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ...
## $ Fehlerhaft.x : int 1 0 1 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum.x : chr "2010-04-09" NA "2010-04-09" NA ...
## $ Fehlerhaft_Fahrleistung.x: num 38354 0 38354 0 0 ...
## $ ID_T02.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: num NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T02_roh)
## V1 X1 ID_T02.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:3204104 Length:3204104
## 1st Qu.: 801027 1st Qu.: 801027 Class :character Class :character
## Median :1602052 Median :1602052 Mode :character Mode :character
## Mean :1602052 Mean :1602052
## 3rd Qu.:2403078 3rd Qu.:2403078
## Max. :3204104 Max. :3204104
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :201 Min. :2011 Min. :0.0 Length:3204104
## 1st Qu.:201 1st Qu.:2011 1st Qu.:0.0 Class :character
## Median :201 Median :2011 Median :0.0 Mode :character
## Mean :201 Mean :2011 Mean :0.1
## 3rd Qu.:201 3rd Qu.:2011 3rd Qu.:0.0
## Max. :201 Max. :2011 Max. :1.0
## NA's :2242873 NA's :2242873 NA's :2242873
## Fehlerhaft_Fahrleistung.x ID_T02.y Produktionsdatum.y
## Min. : 0 Length:3204104 Length:3204104
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 3528
## 3rd Qu.: 0
## Max. :274692
## NA's :2242873
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :202 Min. :2022 Min. :0.0 Length:3204104
## 1st Qu.:202 1st Qu.:2022 1st Qu.:0.0 Class :character
## Median :202 Median :2022 Median :0.0 Mode :character
## Mean :202 Mean :2022 Mean :0.1
## 3rd Qu.:202 3rd Qu.:2022 3rd Qu.:0.0
## Max. :202 Max. :2022 Max. :1.0
## NA's :961231 NA's :961231 NA's :961231
## Fehlerhaft_Fahrleistung.y
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 3537
## 3rd Qu.: 0
## Max. :275189
## NA's :961231
str(Einzelteil_T05_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 16 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 3 10 17 18 19 20 23 28 29 ...
## $ ID_T05.x : chr "5-201-2012-82" "5-201-2012-172" "5-201-2012-23" "5-201-2012-47" ...
## $ Produktionsdatum.x : chr "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-07" ...
## $ Herstellernummer.x : int 201 201 201 201 201 201 201 201 201 201 ...
## $ Werksnummer.x : int 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 ...
## $ Fehlerhaft.x : int 1 0 0 1 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum.x : chr "2010-07-10" NA NA "2010-07-10" ...
## $ Fehlerhaft_Fahrleistung.x: num 43163 0 0 43163 0 ...
## $ ID_T05.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: num NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T05_roh)
## V1 X1 ID_T05.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:1192630 Length:1192630
## 1st Qu.: 298158 1st Qu.: 298158 Class :character Class :character
## Median : 596316 Median : 596316 Mode :character Mode :character
## Mean : 596316 Mean : 596316
## 3rd Qu.: 894473 3rd Qu.: 894473
## Max. :1192630 Max. :1192630
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :201 Min. :2012 Min. :0.0 Length:1192630
## 1st Qu.:201 1st Qu.:2012 1st Qu.:0.0 Class :character
## Median :201 Median :2012 Median :0.0 Mode :character
## Mean :201 Mean :2012 Mean :0.1
## 3rd Qu.:201 3rd Qu.:2012 3rd Qu.:0.0
## Max. :201 Max. :2012 Max. :1.0
## NA's :596315 NA's :596315 NA's :596315
## Fehlerhaft_Fahrleistung.x ID_T05.y Produktionsdatum.y
## Min. : 0 Length:1192630 Length:1192630
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 4000
## 3rd Qu.: 0
## Max. :45033
## NA's :596315
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :202 Min. :2023 Min. :0.0 Length:1192630
## 1st Qu.:202 1st Qu.:2023 1st Qu.:0.0 Class :character
## Median :202 Median :2023 Median :0.0 Mode :character
## Mean :202 Mean :2023 Mean :0.1
## 3rd Qu.:202 3rd Qu.:2023 3rd Qu.:0.0
## Max. :202 Max. :2023 Max. :1.0
## NA's :596315 NA's :596315 NA's :596315
## Fehlerhaft_Fahrleistung.y
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 4000
## 3rd Qu.: 0
## Max. :44955
## NA's :596315
str(Einzelteil_T09_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 16 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 15 16 17 23 24 25 58 59 60 61 ...
## $ ID_T09.x : chr "9-203-2032-31" "9-203-2032-34" "9-203-2032-36" "9-203-2032-60" ...
## $ Produktionsdatum.x : chr "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-08" ...
## $ Herstellernummer.x : int 203 203 203 203 203 203 203 203 203 203 ...
## $ Werksnummer.x : int 2032 2032 2032 2032 2032 2032 2032 2032 2032 2032 ...
## $ Fehlerhaft.x : int 0 0 0 0 0 0 1 0 0 0 ...
## $ Fehlerhaft_Datum.x : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.x: num 0 0 0 0 0 ...
## $ ID_T09.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: num NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T09_roh)
## V1 X1 ID_T09.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:409422 Length:409422
## 1st Qu.:102356 1st Qu.:102356 Class :character Class :character
## Median :204712 Median :204712 Mode :character Mode :character
## Mean :204712 Mean :204712
## 3rd Qu.:307067 3rd Qu.:307067
## Max. :409422 Max. :409422
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :203 Min. :2032 Min. :0.0 Length:409422
## 1st Qu.:203 1st Qu.:2032 1st Qu.:0.0 Class :character
## Median :203 Median :2032 Median :0.0 Mode :character
## Mean :203 Mean :2032 Mean :0.1
## 3rd Qu.:203 3rd Qu.:2032 3rd Qu.:0.0
## Max. :203 Max. :2032 Max. :1.0
## NA's :286596 NA's :286596 NA's :286596
## Fehlerhaft_Fahrleistung.x ID_T09.y Produktionsdatum.y
## Min. : -848.3 Length:409422 Length:409422
## 1st Qu.: 0.0 Class :character Class :character
## Median : 0.0 Mode :character Mode :character
## Mean : 692.5
## 3rd Qu.: 0.0
## Max. :340518.1
## NA's :286596
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :204 Min. :2043 Min. :0.0 Length:409422
## 1st Qu.:204 1st Qu.:2043 1st Qu.:0.0 Class :character
## Median :204 Median :2043 Median :0.0 Mode :character
## Mean :204 Mean :2043 Mean :0.1
## 3rd Qu.:204 3rd Qu.:2043 3rd Qu.:0.0
## Max. :204 Max. :2043 Max. :1.0
## NA's :122826 NA's :122826 NA's :122826
## Fehlerhaft_Fahrleistung.y
## Min. : -848.3
## 1st Qu.: 0.0
## Median : 0.0
## Mean : 761.4
## 3rd Qu.: 0.0
## Max. :359422.3
## NA's :122826
# Deswegen für Aufbereitung der Rohdaten mit Merkmal1 wird so eine Funktioin definiert.
Tabelle_mit_duplizierte_Spalten_Aufbereiten<-function(dat){
Id_Names_Index<- str_which(colnames(dat),regex("ID"))
Id_Names<-colnames(dat)[Id_Names_Index]
Produktionsdatum_Names_Index<- str_which(colnames(dat),regex("Produktionsdatum"))
Produktionsdatum_Names<-colnames(dat)[Produktionsdatum_Names_Index]
Fehlerhaft_Names_Index<- str_which(colnames(dat),regex("t(\\.x)?(\\.y)?\\b"))
Fehlerhaft_Names<-colnames(dat)[Fehlerhaft_Names_Index]
Fehlerhaft_Datum_Names_Index<- str_which(colnames(dat),regex("t_D"))
Fehlerhaft_Datum_Names<-colnames(dat)[Fehlerhaft_Datum_Names_Index]
#zu erst wurde nur relevante Spakten gewählt
Relevant_Names<-c(Id_Names,
Produktionsdatum_Names,
Fehlerhaft_Names,
Fehlerhaft_Datum_Names)
dat<-dat%>%
dplyr::select(Relevant_Names)%>%
#Bevor wir tidyr::unite() nutzenm betroffende Spalten werden als Character gesetzt
dplyr::mutate_all(base::as.character)%>%
#Zusammensetzen von glechgestellte Spalten
tidyr::unite(IDNummer,Id_Names,na.rm=TRUE)%>%
tidyr::unite(Produktionsdatum,Produktionsdatum_Names,na.rm=TRUE)%>%
tidyr::unite(Fehlerhaft,Fehlerhaft_Names,na.rm=TRUE)%>%
tidyr::unite(Fehlerhaft_Datum,Fehlerhaft_Datum_Names,na.rm=TRUE)%>%
#Umwandeln der Datentyp
mutate(Produktionsdatum=lubridate::as_date(Produktionsdatum))%>%
mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
mutate(Fehlerhaft=base::as.integer(Fehlerhaft))%>%
mutate(Fehlerhaft=base::as.logical(Fehlerhaft))
}
Einzelteil_T01<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T01_roh)
Einzelteil_T02<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T02_roh)
Einzelteil_T05<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T05_roh)
Einzelteil_T09<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Einzelteil_T09_roh)
Origin bedeutetBetroffend sind Einzelteile: T03,T04,T06,T07,T08 und T10
str(Einzelteil_T03_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T03 : chr "3-202-2023-249" "3-202-2022-8" "3-202-2023-192" "3-202-2023-16" ...
## $ Herstellernummer : int 202 202 202 202 202 202 202 202 202 202 ...
## $ Werksnummer : int 2023 2022 2023 2023 2023 2022 2023 2023 2023 2023 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T03_roh)
## V1 X1 ID_T03 Herstellernummer
## Min. : 1 Min. : 1 Length:1192630 Min. :201.0
## 1st Qu.: 298158 1st Qu.: 298158 Class :character 1st Qu.:202.0
## Median : 596316 Median : 596316 Mode :character Median :202.0
## Mean : 596316 Mean : 596316 Mean :201.9
## 3rd Qu.: 894473 3rd Qu.: 894473 3rd Qu.:202.0
## Max. :1192630 Max. :1192630 Max. :202.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2011 Min. :0.00000 Length:1192630 Min. : 0
## 1st Qu.:2022 1st Qu.:0.00000 Class :character 1st Qu.: 0
## Median :2023 Median :0.00000 Mode :character Median : 0
## Mean :2022 Mean :0.09987 Mean : 4230
## 3rd Qu.:2023 3rd Qu.:0.00000 3rd Qu.: 0
## Max. :2023 Max. :1.00000 Max. :47819
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:1192630
## 1st Qu.:14917 Class :character
## Median :15644 Mode :character
## Mean :15644
## 3rd Qu.:16371
## Max. :17110
str(Einzelteil_T04_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T04 : chr "4-204-2043-113" "4-202-2023-18" "4-204-2043-98" "4-202-2023-51" ...
## $ Herstellernummer : int 204 202 204 202 204 202 202 204 204 204 ...
## $ Werksnummer : int 2043 2023 2043 2023 2043 2023 2023 2042 2043 2043 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : chr "0" "0" "0" "0" ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T04_roh)
## V1 X1 ID_T04 Herstellernummer
## Min. : 1 Min. : 1 Length:1192630 Min. :202.0
## 1st Qu.: 298158 1st Qu.: 298158 Class :character 1st Qu.:202.0
## Median : 596316 Median : 596316 Mode :character Median :204.0
## Mean : 596316 Mean : 596316 Mean :203.4
## 3rd Qu.: 894473 3rd Qu.: 894473 3rd Qu.:204.0
## Max. :1192630 Max. :1192630 Max. :204.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2023 Min. :0.0000 Length:1192630 Length:1192630
## 1st Qu.:2023 1st Qu.:0.0000 Class :character Class :character
## Median :2043 Median :0.0000 Mode :character Mode :character
## Mean :2037 Mean :0.1003
## 3rd Qu.:2043 3rd Qu.:0.0000
## Max. :2043 Max. :1.0000
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:1192630
## 1st Qu.:14919 Class :character
## Median :15647 Mode :character
## Mean :15647
## 3rd Qu.:16376
## Max. :17110
str(Einzelteil_T06_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T06 : chr "6-204-2044-60" "6-203-2032-10" "6-204-2044-86" "6-203-2032-99" ...
## $ Herstellernummer : int 201 203 201 203 203 203 203 203 203 203 ...
## $ Werksnummer : int 2044 2032 2044 2032 2032 2032 2032 2032 2032 2032 ...
## $ Fehlerhaft : int 1 0 0 0 1 0 1 0 0 0 ...
## $ Fehlerhaft_Datum : chr "2009-04-11" NA NA NA ...
## $ Fehlerhaft_Fahrleistung : num 6064 0 0 0 6064 ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T06_roh)
## V1 X1 ID_T06 Herstellernummer
## Min. : 1 Min. : 1 Length:1192630 Min. :201.0
## 1st Qu.: 298158 1st Qu.: 298158 Class :character 1st Qu.:201.0
## Median : 596316 Median : 596316 Mode :character Median :203.0
## Mean : 596316 Mean : 596316 Mean :202.2
## 3rd Qu.: 894473 3rd Qu.: 894473 3rd Qu.:203.0
## Max. :1192630 Max. :1192630 Max. :203.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2032 Min. :0.00000 Length:1192630 Min. : 0.0
## 1st Qu.:2032 1st Qu.:0.00000 Class :character 1st Qu.: 0.0
## Median :2032 Median :0.00000 Mode :character Median : 0.0
## Mean :2037 Mean :0.09999 Mean : 391.9
## 3rd Qu.:2044 3rd Qu.:0.00000 3rd Qu.: 0.0
## Max. :2044 Max. :1.00000 Max. :7534.0
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:1192630
## 1st Qu.:14919 Class :character
## Median :15648 Mode :character
## Mean :15648
## 3rd Qu.:16376
## Max. :17110
str(Einzelteil_T07_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T07 : chr "7-201-2012-30" "7-201-2012-101" "7-203-2031-19" "7-203-2031-23" ...
## $ Herstellernummer : int 201 201 203 203 203 201 201 201 201 201 ...
## $ Werksnummer : int 2011 2011 2032 2032 2032 2011 2011 2011 2011 2011 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T07_roh)
## V1 X1 ID_T07 Herstellernummer
## Min. : 1 Min. : 1 Length:409422 Min. :201.0
## 1st Qu.:102356 1st Qu.:102356 Class :character 1st Qu.:201.0
## Median :204712 Median :204712 Mode :character Median :201.0
## Mean :204712 Mean :204712 Mean :201.4
## 3rd Qu.:307067 3rd Qu.:307067 3rd Qu.:201.0
## Max. :409422 Max. :409422 Max. :203.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2011 Min. :0.0000 Length:409422 Min. : -453.1
## 1st Qu.:2011 1st Qu.:0.0000 Class :character 1st Qu.: 0.0
## Median :2011 Median :0.0000 Mode :character Median : 0.0
## Mean :2015 Mean :0.1003 Mean : 388.0
## 3rd Qu.:2011 3rd Qu.:0.0000 3rd Qu.: 0.0
## Max. :2032 Max. :1.0000 Max. :192050.2
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:409422
## 1st Qu.:14910 Class :character
## Median :15630 Mode :character
## Mean :15631
## 3rd Qu.:16352
## Max. :17105
str(Einzelteil_T08_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T08 : chr "8-204-2041-38" "8-203-2031-8" "8-203-2031-43" "8-203-2031-45" ...
## $ Herstellernummer : int 204 203 203 203 203 204 203 203 203 203 ...
## $ Werksnummer : int 2041 2032 2032 2032 2032 2041 2032 2032 2032 2032 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14191 14191 14191 14191 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T08_roh)
## V1 X1 ID_T08 Herstellernummer
## Min. : 1 Min. : 1 Length:409422 Min. :203.0
## 1st Qu.:102356 1st Qu.:102356 Class :character 1st Qu.:203.0
## Median :204712 Median :204712 Mode :character Median :203.0
## Mean :204712 Mean :204712 Mean :203.4
## 3rd Qu.:307067 3rd Qu.:307067 3rd Qu.:204.0
## Max. :409422 Max. :409422 Max. :204.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2032 Min. :0.0000 Length:409422 Min. : 0
## 1st Qu.:2032 1st Qu.:0.0000 Class :character 1st Qu.: 0
## Median :2032 Median :0.0000 Mode :character Median : 0
## Mean :2036 Mean :0.1001 Mean : 2508
## 3rd Qu.:2041 3rd Qu.:0.0000 3rd Qu.: 0
## Max. :2041 Max. :1.0000 Max. :216046
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:409422
## 1st Qu.:14910 Class :character
## Median :15631 Mode :character
## Mean :15631
## 3rd Qu.:16352
## Max. :17108
str(Einzelteil_T09_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 16 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 15 16 17 23 24 25 58 59 60 61 ...
## $ ID_T09.x : chr "9-203-2032-31" "9-203-2032-34" "9-203-2032-36" "9-203-2032-60" ...
## $ Produktionsdatum.x : chr "2008-11-07" "2008-11-07" "2008-11-07" "2008-11-08" ...
## $ Herstellernummer.x : int 203 203 203 203 203 203 203 203 203 203 ...
## $ Werksnummer.x : int 2032 2032 2032 2032 2032 2032 2032 2032 2032 2032 ...
## $ Fehlerhaft.x : int 0 0 0 0 0 0 1 0 0 0 ...
## $ Fehlerhaft_Datum.x : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.x: num 0 0 0 0 0 ...
## $ ID_T09.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: num NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T09_roh)
## V1 X1 ID_T09.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:409422 Length:409422
## 1st Qu.:102356 1st Qu.:102356 Class :character Class :character
## Median :204712 Median :204712 Mode :character Mode :character
## Mean :204712 Mean :204712
## 3rd Qu.:307067 3rd Qu.:307067
## Max. :409422 Max. :409422
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :203 Min. :2032 Min. :0.0 Length:409422
## 1st Qu.:203 1st Qu.:2032 1st Qu.:0.0 Class :character
## Median :203 Median :2032 Median :0.0 Mode :character
## Mean :203 Mean :2032 Mean :0.1
## 3rd Qu.:203 3rd Qu.:2032 3rd Qu.:0.0
## Max. :203 Max. :2032 Max. :1.0
## NA's :286596 NA's :286596 NA's :286596
## Fehlerhaft_Fahrleistung.x ID_T09.y Produktionsdatum.y
## Min. : -848.3 Length:409422 Length:409422
## 1st Qu.: 0.0 Class :character Class :character
## Median : 0.0 Mode :character Mode :character
## Mean : 692.5
## 3rd Qu.: 0.0
## Max. :340518.1
## NA's :286596
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :204 Min. :2043 Min. :0.0 Length:409422
## 1st Qu.:204 1st Qu.:2043 1st Qu.:0.0 Class :character
## Median :204 Median :2043 Median :0.0 Mode :character
## Mean :204 Mean :2043 Mean :0.1
## 3rd Qu.:204 3rd Qu.:2043 3rd Qu.:0.0
## Max. :204 Max. :2043 Max. :1.0
## NA's :122826 NA's :122826 NA's :122826
## Fehlerhaft_Fahrleistung.y
## Min. : -848.3
## 1st Qu.: 0.0
## Median : 0.0
## Mean : 761.4
## 3rd Qu.: 0.0
## Max. :359422.3
## NA's :122826
str(Einzelteil_T10_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T10 : chr "10-204-2042-41" "10-203-2032-22" "10-203-2032-28" "10-203-2032-37" ...
## $ Herstellernummer : int 204 203 203 203 203 203 203 204 204 204 ...
## $ Werksnummer : int 2043 2032 2032 2032 2032 2032 2032 2043 2043 2043 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : chr "0" "0" "0" "0" ...
## $ Produktionsdatum_Origin_01011970: int 14190 14190 14190 14190 14190 14190 14190 14190 14190 14190 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Einzelteil_T10_roh)
## V1 X1 ID_T10 Herstellernummer
## Min. : 1 Min. : 1 Length:409422 Min. :203.0
## 1st Qu.:102356 1st Qu.:102356 Class :character 1st Qu.:203.0
## Median :204712 Median :204712 Mode :character Median :204.0
## Mean :204712 Mean :204712 Mean :203.6
## 3rd Qu.:307067 3rd Qu.:307067 3rd Qu.:204.0
## Max. :409422 Max. :409422 Max. :204.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :2032 Min. :0.00000 Length:409422 Length:409422
## 1st Qu.:2032 1st Qu.:0.00000 Class :character Class :character
## Median :2043 Median :0.00000 Mode :character Mode :character
## Mean :2039 Mean :0.09999
## 3rd Qu.:2043 3rd Qu.:0.00000
## Max. :2043 Max. :1.00000
## Produktionsdatum_Origin_01011970 origin
## Min. :14190 Length:409422
## 1st Qu.:14911 Class :character
## Median :15632 Mode :character
## Mean :15632
## 3rd Qu.:16352
## Max. :17102
# Deswegen für Rohdaten mit Merkmal2 wird so eine Funktioin definiert.
Tabelle_mit_falschem_Produktionsdatum_Aufbereiten<-function(dat){
Id_Name_Index<- str_which(colnames(dat),regex("ID"))
Id_Name<-colnames(dat)[Id_Name_Index]
Produktionsdatum_Name_Index<- str_which(colnames(dat),regex("Pro"))
Produktionsdatum_Name<-colnames(dat)[Produktionsdatum_Name_Index]
Fehlerhaft_Name_Index<- str_which(colnames(dat),regex("t\\b"))
Fehlerhaft_Name<-colnames(dat)[Fehlerhaft_Name_Index]
Fehlerhaft_Datum_Name_Index<- str_which(colnames(dat),regex("t_D"))
Fehlerhaft_Datum_Name<-colnames(dat)[Fehlerhaft_Datum_Name_Index]
#zu erst wurde nur relevante Spakten gewählt
Relevant_Names<-c(Id_Name,
Produktionsdatum_Name,
Fehlerhaft_Name,
Fehlerhaft_Datum_Name,
"origin")
dat<-dat%>%
dplyr::select(Relevant_Names)%>%
#Umbenennen
dplyr::rename(IDNummer=eply::unquote(Id_Name)) %>%
dplyr::rename(Produktionsdatum=eply::unquote(Produktionsdatum_Name)) %>%
dplyr::rename(Fehlerhaft=eply::unquote(Fehlerhaft_Name)) %>%
dplyr::rename(Fehlerhaft_Datum=eply::unquote(Fehlerhaft_Datum_Name)) %>%
#Umwandeln der Datentyp
dplyr::mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
dplyr::mutate(Fehlerhaft=base::as.integer(Fehlerhaft))%>%
dplyr::mutate(Fehlerhaft=base::as.logical(Fehlerhaft))%>%
#Behandeln Produktionsdatum
dplyr::mutate(Produktionsdatum=Produktionsdatum+lubridate::dmy(origin))%>%
#Entfernung von Variable origin
dplyr::select(-origin)
}
Einzelteil_T03<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T03_roh)
Einzelteil_T04<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T04_roh)
Einzelteil_T06<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T06_roh)
Einzelteil_T07<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T07_roh)
Einzelteil_T08<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T08_roh)
Einzelteil_T10<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Einzelteil_T10_roh)
#remove unused variable
rm(Einzelteil_T01_roh)
rm(Einzelteil_T02_roh)
rm(Einzelteil_T03_roh)
rm(Einzelteil_T04_roh)
rm(Einzelteil_T05_roh)
rm(Einzelteil_T06_roh)
rm(Einzelteil_T07_roh)
rm(Einzelteil_T08_roh)
rm(Einzelteil_T09_roh)
rm(Einzelteil_T10_roh)
Die Tabellen aller Motoren weisen auch zwei unterschiedliche merkmale auf.Das ist ähnlich wie Merkmale von Einteilen.
Betroffender ist Motor: K1DI1
Origin bedeutetBetroffende sind Motoren: K1DI2,K1BE1 und K1BE2
Die Relevante Spalten sind identisch,deswegen ist die vorher definierte Funktion wieder verwendbar
str(Komponente_K1DI1_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 23 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 5 6 7 8 9 10 11 12 ...
## $ ID_Motor.x : chr "K1DI1-101-1041-90" "K1DI1-101-1041-12" "K1DI1-101-1041-55" "K1DI1-101-1041-34" ...
## $ Produktionsdatum.x : chr "2008-11-13" "2008-11-13" "2008-11-13" "2008-11-13" ...
## $ Herstellernummer.x : int 101 101 101 101 101 101 101 101 101 101 ...
## $ Werksnummer.x : int 1011 1011 1011 1011 1011 1011 1011 1011 1011 1011 ...
## $ Fehlerhaft.x : int 0 1 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum.x : chr NA "2010-03-09" NA NA ...
## $ Fehlerhaft_Fahrleistung.x: int 0 21509 0 0 0 0 0 0 0 0 ...
## $ ID_Motor.y : chr NA NA NA NA ...
## $ Produktionsdatum.y : chr NA NA NA NA ...
## $ Herstellernummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft.y : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum.y : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung.y: int NA NA NA NA NA NA NA NA NA NA ...
## $ ID_Motor : chr NA NA NA NA ...
## $ Produktionsdatum : chr NA NA NA NA ...
## $ Herstellernummer : int NA NA NA NA NA NA NA NA NA NA ...
## $ Werksnummer : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft : int NA NA NA NA NA NA NA NA NA NA ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : int NA NA NA NA NA NA NA NA NA NA ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1DI1_roh)
## V1 X1 ID_Motor.x Produktionsdatum.x
## Min. : 1 Min. : 1 Length:1192630 Length:1192630
## 1st Qu.: 298158 1st Qu.: 298158 Class :character Class :character
## Median : 596316 Median : 596316 Mode :character Mode :character
## Mean : 596316 Mean : 596316
## 3rd Qu.: 894473 3rd Qu.: 894473
## Max. :1192630 Max. :1192630
##
## Herstellernummer.x Werksnummer.x Fehlerhaft.x Fehlerhaft_Datum.x
## Min. :101 Min. :1011 Min. :0.0 Length:1192630
## 1st Qu.:101 1st Qu.:1011 1st Qu.:0.0 Class :character
## Median :101 Median :1011 Median :0.0 Mode :character
## Mean :101 Mean :1011 Mean :0.1
## 3rd Qu.:101 3rd Qu.:1011 3rd Qu.:0.0
## Max. :101 Max. :1011 Max. :1.0
## NA's :715578 NA's :715578 NA's :715578
## Fehlerhaft_Fahrleistung.x ID_Motor.y Produktionsdatum.y
## Min. : 0 Length:1192630 Length:1192630
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 1994
## 3rd Qu.: 0
## Max. :22757
## NA's :715578
## Herstellernummer.y Werksnummer.y Fehlerhaft.y Fehlerhaft_Datum.y
## Min. :102 Min. :1021 Min. :0.0 Length:1192630
## 1st Qu.:102 1st Qu.:1021 1st Qu.:0.0 Class :character
## Median :102 Median :1021 Median :0.0 Mode :character
## Mean :102 Mean :1021 Mean :0.1
## 3rd Qu.:102 3rd Qu.:1021 3rd Qu.:0.0
## Max. :102 Max. :1021 Max. :1.0
## NA's :954104 NA's :954104 NA's :954104
## Fehlerhaft_Fahrleistung.y ID_Motor Produktionsdatum
## Min. : 0 Length:1192630 Length:1192630
## 1st Qu.: 0 Class :character Class :character
## Median : 0 Mode :character Mode :character
## Mean : 2003
## 3rd Qu.: 0
## Max. :22707
## NA's :954104
## Herstellernummer Werksnummer Fehlerhaft Fehlerhaft_Datum
## Min. :103 Min. :1031 Min. :0.0 Length:1192630
## 1st Qu.:103 1st Qu.:1031 1st Qu.:0.0 Class :character
## Median :103 Median :1031 Median :0.0 Mode :character
## Mean :103 Mean :1031 Mean :0.1
## 3rd Qu.:103 3rd Qu.:1031 3rd Qu.:0.0
## Max. :103 Max. :1031 Max. :1.0
## NA's :715578 NA's :715578 NA's :715578
## Fehlerhaft_Fahrleistung
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 1998
## 3rd Qu.: 0
## Max. :22807
## NA's :715578
str(Komponente_K1DI2_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Motor : chr "K1DI2-103-1031-2" "K1DI2-103-1031-9" "K1DI2-103-1031-10" "K1DI2-103-1031-11" ...
## $ Herstellernummer : int 103 103 103 103 103 103 103 103 103 103 ...
## $ Werksnummer : int 1031 1031 1031 1031 1031 1031 1031 1031 1031 1031 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 1 1 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : int 0 0 0 0 0 0 0 0 27498 27498 ...
## $ Produktionsdatum_Origin_01011970: int 14195 14196 14196 14196 14196 14196 14196 14196 14196 14196 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1DI2_roh)
## V1 X1 ID_Motor Herstellernummer
## Min. : 1 Min. : 1 Length:409422 Min. :102.0
## 1st Qu.:102356 1st Qu.:102356 Class :character 1st Qu.:102.0
## Median :204712 Median :204712 Mode :character Median :102.0
## Mean :204712 Mean :204712 Mean :102.4
## 3rd Qu.:307067 3rd Qu.:307067 3rd Qu.:103.0
## Max. :409422 Max. :409422 Max. :103.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :1021 Min. :0.00000 Length:409422 Min. : 0
## 1st Qu.:1021 1st Qu.:0.00000 Class :character 1st Qu.: 0
## Median :1021 Median :0.00000 Mode :character Median : 0
## Mean :1025 Mean :0.09991 Mean : 2348
## 3rd Qu.:1031 3rd Qu.:0.00000 3rd Qu.: 0
## Max. :1031 Max. :1.00000 Max. :295258
## Produktionsdatum_Origin_01011970 origin
## Min. :14195 Length:409422
## 1st Qu.:14927 Class :character
## Median :15656 Mode :character
## Mean :15656
## 3rd Qu.:16384
## Max. :17121
str(Komponente_K1BE1_roh)
## Classes 'data.table' and 'data.frame': 1192630 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-90" "K1BE1-101-1011-2" ...
## $ Herstellernummer : int 101 101 101 101 101 101 101 101 101 101 ...
## $ Werksnummer : int 1011 1011 1011 1011 1011 1011 1011 1011 1011 1011 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 1 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : int 0 0 0 0 0 0 0 31767 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14195 14196 14196 14195 14196 14196 14196 14196 14196 14196 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1BE1_roh)
## V1 X1 ID_Motor Herstellernummer
## Min. : 1 Min. : 1 Length:1192630 Min. :101.0
## 1st Qu.: 298158 1st Qu.: 298158 Class :character 1st Qu.:101.0
## Median : 596316 Median : 596316 Mode :character Median :104.0
## Mean : 596316 Mean : 596316 Mean :102.9
## 3rd Qu.: 894473 3rd Qu.: 894473 3rd Qu.:104.0
## Max. :1192630 Max. :1192630 Max. :104.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :1011 Min. :0.0000 Length:1192630 Min. : 0
## 1st Qu.:1011 1st Qu.:0.0000 Class :character 1st Qu.: 0
## Median :1041 Median :0.0000 Mode :character Median : 0
## Mean :1030 Mean :0.1754 Mean : 5234
## 3rd Qu.:1041 3rd Qu.:0.0000 3rd Qu.: 0
## Max. :1041 Max. :1.0000 Max. :33765
## Produktionsdatum_Origin_01011970 origin
## Min. :14195 Length:1192630
## 1st Qu.:14926 Class :character
## Median :15657 Mode :character
## Mean :15656
## 3rd Qu.:16387
## Max. :17121
str(Komponente_K1BE2_roh)
## Classes 'data.table' and 'data.frame': 409422 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Motor : chr "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-10" "K1BE2-101-1011-11" ...
## $ Herstellernummer : int 101 101 101 101 101 104 104 104 104 104 ...
## $ Werksnummer : int 1011 1011 1011 1011 1011 1041 1041 1041 1041 1041 ...
## $ Fehlerhaft : int 0 0 0 0 1 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : int 0 0 0 0 9272 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14196 14196 14196 14196 14196 14197 14197 14197 14197 14197 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Komponente_K1BE2_roh)
## V1 X1 ID_Motor Herstellernummer
## Min. : 1 Min. : 1 Length:409422 Min. :101.0
## 1st Qu.:102356 1st Qu.:102356 Class :character 1st Qu.:104.0
## Median :204712 Median :204712 Mode :character Median :104.0
## Mean :204712 Mean :204712 Mean :103.4
## 3rd Qu.:307067 3rd Qu.:307067 3rd Qu.:104.0
## Max. :409422 Max. :409422 Max. :104.0
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :1011 Min. :0.0000 Length:409422 Min. : 0.0
## 1st Qu.:1041 1st Qu.:0.0000 Class :character 1st Qu.: 0.0
## Median :1041 Median :0.0000 Mode :character Median : 0.0
## Mean :1035 Mean :0.1753 Mean : 923.4
## 3rd Qu.:1041 3rd Qu.:0.0000 3rd Qu.: 0.0
## Max. :1041 Max. :1.0000 Max. :270001.0
## Produktionsdatum_Origin_01011970 origin
## Min. :14195 Length:409422
## 1st Qu.:14927 Class :character
## Median :15653 Mode :character
## Mean :15655
## 3rd Qu.:16384
## Max. :17120
Komponente_K1DI1<-Tabelle_mit_duplizierte_Spalten_Aufbereiten(Komponente_K1DI1_roh)
Komponente_K1DI2<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1DI2_roh)
Komponente_K1BE1<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1BE1_roh)
Komponente_K1BE2<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Komponente_K1BE2_roh)
rm(Komponente_K1DI1_roh,
Komponente_K1DI2_roh,
Komponente_K1BE1_roh,
Komponente_K1BE2_roh)
Bei Bestandteile von Motoren ist die eindeutige Beziehung zwischen Einzelteile und Motor wichtig. Ein bestimmiter Einzelteil muss genau eine Moter zugeordnet.Deswegen soll unsere Ideale Datenstruktur von Tabelle Motorbestandteile nur 2 Spalten ID_Teil,ID_Motor
#Benzinmotern : K1BE1
str(Bestandteile_Komponente_K1BE1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-201-2011-45" "1-201-2011-429" "1-201-2011-399" "1-201-2011-335" ...
## $ ID_T2 : chr "2-201-2011-161" "2-201-2011-239" "2-201-2011-220" "2-202-2022-463" ...
## $ ID_T3 : chr "3-202-2023-14" "3-202-2023-16" "3-202-2023-46" "3-202-2023-149" ...
## $ ID_T4 : chr "4-202-2023-20" "4-202-2023-51" "4-202-2023-93" "4-204-2042-18" ...
## $ ID_K1BE1: chr "K1BE1-101-1011-1" "K1BE1-101-1011-2" "K1BE1-101-1011-3" "K1BE1-101-1011-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T3 = col_character(),
## .. ID_T4 = col_character(),
## .. ID_K1BE1 = col_character()
## .. )
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
## $ ID_T2 : chr "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
## $ ID_T7 : chr "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
## $ ID_T8 : chr "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
## $ ID_K1BE2: chr "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T7 = col_character(),
## .. ID_T8 = col_character(),
## .. ID_K1BE2 = col_character()
## .. )
anyNA(Bestandteile_Komponente_K1BE1_roh)
## [1] FALSE
#Benzinmotern : K1BE2
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
## $ ID_T2 : chr "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
## $ ID_T7 : chr "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
## $ ID_T8 : chr "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
## $ ID_K1BE2: chr "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T7 = col_character(),
## .. ID_T8 = col_character(),
## .. ID_K1BE2 = col_character()
## .. )
str(Bestandteile_Komponente_K1BE2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-202-2021-339" "1-201-2011-57" "1-202-2021-101" "1-204-2044-201" ...
## $ ID_T2 : chr "2-202-2022-171" "2-201-2011-260" "2-202-2022-335" "2-201-2011-312" ...
## $ ID_T7 : chr "7-203-2031-9" "7-201-2012-30" "7-201-2012-101" "7-203-2031-2" ...
## $ ID_T8 : chr "8-204-2041-12" "8-204-2041-38" "8-203-2031-8" "8-203-2031-12" ...
## $ ID_K1BE2: chr "K1BE2-101-1011-1" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T7 = col_character(),
## .. ID_T8 = col_character(),
## .. ID_K1BE2 = col_character()
## .. )
anyNA(Bestandteile_Komponente_K1BE2_roh)
## [1] FALSE
#Dieselmoteren :K1DI1
str(Bestandteile_Komponente_K1DI1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-204-2044-27" "1-202-2021-32" "1-201-2011-238" "1-202-2021-297" ...
## $ ID_T2 : chr "2-201-2011-144" "2-202-2022-577" "2-202-2022-514" "2-202-2022-626" ...
## $ ID_T5 : chr "5-202-2012-89" "5-202-2012-155" "5-202-2012-199" "5-201-2012-57" ...
## $ ID_T6 : chr "6-203-2032-5" "6-203-2032-79" "6-203-2032-136" "6-203-2032-147" ...
## $ ID_K1DI1: chr "K1DI1-101-1041-1" "K1DI1-101-1041-2" "K1DI1-101-1041-3" "K1DI1-101-1041-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T5 = col_character(),
## .. ID_T6 = col_character(),
## .. ID_K1DI1 = col_character()
## .. )
str(Bestandteile_Komponente_K1DI1_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1192630 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-204-2044-27" "1-202-2021-32" "1-201-2011-238" "1-202-2021-297" ...
## $ ID_T2 : chr "2-201-2011-144" "2-202-2022-577" "2-202-2022-514" "2-202-2022-626" ...
## $ ID_T5 : chr "5-202-2012-89" "5-202-2012-155" "5-202-2012-199" "5-201-2012-57" ...
## $ ID_T6 : chr "6-203-2032-5" "6-203-2032-79" "6-203-2032-136" "6-203-2032-147" ...
## $ ID_K1DI1: chr "K1DI1-101-1041-1" "K1DI1-101-1041-2" "K1DI1-101-1041-3" "K1DI1-101-1041-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T5 = col_character(),
## .. ID_T6 = col_character(),
## .. ID_K1DI1 = col_character()
## .. )
anyNA(Bestandteile_Komponente_K1DI1_roh)
## [1] FALSE
#Dieselmoteren :K1DI2
str(Bestandteile_Komponente_K1DI2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-204-2044-183" "1-201-2011-246" "1-201-2011-152" "1-201-2011-134" ...
## $ ID_T2 : chr "2-202-2022-551" "2-202-2022-738" "2-201-2011-181" "2-202-2022-561" ...
## $ ID_T9 : chr "9-204-2043-1" "9-204-2043-35" "9-203-2032-29" "9-203-2032-38" ...
## $ ID_T10 : chr "10-204-2042-3" "10-204-2042-41" "10-203-2032-8" "10-203-2032-9" ...
## $ ID_K1DI2: chr "K1DI2-103-1031-1" "K1DI2-103-1031-2" "K1DI2-103-1031-3" "K1DI2-103-1031-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T9 = col_character(),
## .. ID_T10 = col_character(),
## .. ID_K1DI2 = col_character()
## .. )
str(Bestandteile_Komponente_K1DI2_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 409422 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_T1 : chr "1-204-2044-183" "1-201-2011-246" "1-201-2011-152" "1-201-2011-134" ...
## $ ID_T2 : chr "2-202-2022-551" "2-202-2022-738" "2-201-2011-181" "2-202-2022-561" ...
## $ ID_T9 : chr "9-204-2043-1" "9-204-2043-35" "9-203-2032-29" "9-203-2032-38" ...
## $ ID_T10 : chr "10-204-2042-3" "10-204-2042-41" "10-203-2032-8" "10-203-2032-9" ...
## $ ID_K1DI2: chr "K1DI2-103-1031-1" "K1DI2-103-1031-2" "K1DI2-103-1031-3" "K1DI2-103-1031-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_T1 = col_character(),
## .. ID_T2 = col_character(),
## .. ID_T9 = col_character(),
## .. ID_T10 = col_character(),
## .. ID_K1DI2 = col_character()
## .. )
anyNA(Bestandteile_Komponente_K1DI2_roh)
## [1] FALSE
Motorbestandteil_Aufbereitung<-function(dat){
# die Muster "ID_T" kann alle Spaltenname ,die Einzeilteilen relevanten sind, kriegen
# z.B:
# "ID_T1","ID_T2","ID_T3","ID_T4","ID_T5","ID_T6","ID_T7","ID_T8","ID_T9","ID_T10",
#
Id_Teile_Names_Index<- str_which(colnames(dat),regex("ID_T"))
Id_Teile_Names<-colnames(dat)[Id_Teile_Names_Index]
# die Muster "ID_K" kann alle Spaltenname ,die Motor relevanten sind, kriegen
# z.B:
# "ID_K1DI1","ID_K1DI2","ID_K1BE1","ID_K1BE2"
#
Id_Motor_Name_Index<- str_which(colnames(dat),regex("ID_K"))
Id_Moto_Name<-colnames(dat)[Id_Motor_Name_Index]
Motor_Typ_geben <- function(ID_Motor) {
if(stringr::str_detect(ID_Motor,regex("DI"))){
return(as.factor("Dieselmotor"))
}else if(stringr::str_detect(ID_Motor,regex("BE"))){
return(as.factor("Benzinmotor"))
}else{
return(as.factor("unbekannt"))
}
}
dat<-dat%>%
#Auswahl relevanter Spalten
dplyr::select(c(Id_Teile_Names,Id_Moto_Name))%>%
#Umbennen auf "ID_Motor"
#betroffend sind Spalten:
# "ID_K1DI1","ID_K1DI2","ID_K1BE1","ID_K1BE2"
dplyr::rename(ID_Motor=eply::unquote(Id_Moto_Name))%>%
#neue Spalten hinzufügen
#Spaltenname (neue):
# "Motor_Typ":
# Mögliche Werte sind "Benzinmotor","Dieselmotor" oder "unbekannt"
dplyr::mutate(Motor_Typ=Motor_Typ_geben(ID_Motor))%>%
#alle Spalten, die mit IDNummer von Einzelteile soll in eine Spalten integriert werden
#Spaltenname (neue)
# "ID_Teil":
# Mögliche werte sind "x-xxx-xxx-xxxx",x sind Ziffer
# "Teil_Typ":
# Mögliche werte sind "ID_Tx",x sind Ziffer
tidyr::gather(Id_Teile_Names,key="Teil_Typ",value="ID_Teil")%>%
#Auswahl von nur zwei Spalten von ID
dplyr::select("ID_Motor","ID_Teil")
}
Abbildung_Teil_zu_Motor_K1BE1<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1BE1_roh)
Abbildung_Teil_zu_Motor_K1BE2<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1BE2_roh)
Abbildung_Teil_zu_Motor_K1DI1<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1DI1_roh)
Abbildung_Teil_zu_Motor_K1DI2<-Motorbestandteil_Aufbereitung(Bestandteile_Komponente_K1DI2_roh)
#remove unuseable variable
rm(
Bestandteile_Komponente_K1BE1_roh,
Bestandteile_Komponente_K1BE2_roh,
Bestandteile_Komponente_K1DI1_roh,
Bestandteile_Komponente_K1DI2_roh
)
Die Tabellen aller Motoren weisen auch zwei unterschiedliche merkmale auf:
Betroffende sind Fahrzeug: Typ11 und Typ12
Origin bedeutetBetroffende sind Fahrzeug: Typ21 und Typ22
Deswegung bei Aufbereitung Fahrzeugdaten brauchen wir nur eine zusätzlichen Funktion für ordentliche Struktur
str(Fahrzeuge_OEM1_Typ11_roh)
## Classes 'data.table' and 'data.frame': 1977164 obs. of 9 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## $ Produktionsdatum : chr "2008-11-18" "2008-11-18" "2008-11-19" "2008-11-19" ...
## $ Herstellernummer : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Werksnummer : int 11 11 11 11 11 11 11 11 11 11 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 1 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung: int 0 0 0 0 0 0 0 0 44951 0 ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM1_Typ11_roh)
## V1 X1 ID_Fahrzeug Produktionsdatum
## Min. : 1 Min. : 1 Length:1977164 Length:1977164
## 1st Qu.: 494292 1st Qu.: 494292 Class :character Class :character
## Median : 988583 Median : 988583 Mode :character Mode :character
## Mean : 988583 Mean : 988583
## 3rd Qu.:1482873 3rd Qu.:1482873
## Max. :1977164 Max. :1977164
## Herstellernummer Werksnummer Fehlerhaft Fehlerhaft_Datum
## Min. :1 Min. :11.0 Min. :0.0000 Length:1977164
## 1st Qu.:1 1st Qu.:11.0 1st Qu.:0.0000 Class :character
## Median :1 Median :11.0 Median :0.0000 Mode :character
## Mean :1 Mean :11.4 Mean :0.1002
## 3rd Qu.:1 3rd Qu.:12.0 3rd Qu.:0.0000
## Max. :1 Max. :12.0 Max. :1.0000
## Fehlerhaft_Fahrleistung
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 4227
## 3rd Qu.: 0
## Max. :47818
str(Fahrzeuge_OEM1_Typ12_roh)
## Classes 'data.table' and 'data.frame': 408096 obs. of 9 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Fahrzeug : chr "12-1-12-1" "12-1-12-2" "12-1-12-3" "12-1-12-4" ...
## $ Produktionsdatum : chr "2008-11-19" "2008-11-19" "2008-11-19" "2008-11-19" ...
## $ Herstellernummer : int 1 1 1 1 1 1 1 1 1 1 ...
## $ Werksnummer : int 12 12 12 12 12 12 12 12 12 12 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung: int 0 0 0 0 0 0 0 0 0 0 ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM1_Typ12_roh)
## V1 X1 ID_Fahrzeug Produktionsdatum
## Min. : 1 Min. : 1 Length:408096 Length:408096
## 1st Qu.:102025 1st Qu.:102025 Class :character Class :character
## Median :204049 Median :204049 Mode :character Mode :character
## Mean :204049 Mean :204049
## 3rd Qu.:306072 3rd Qu.:306072
## Max. :408096 Max. :408096
## Herstellernummer Werksnummer Fehlerhaft Fehlerhaft_Datum
## Min. :1 Min. :12 Min. :0.0000 Length:408096
## 1st Qu.:1 1st Qu.:12 1st Qu.:0.0000 Class :character
## Median :1 Median :12 Median :0.0000 Mode :character
## Mean :1 Mean :12 Mean :0.1004
## 3rd Qu.:1 3rd Qu.:12 3rd Qu.:0.0000
## Max. :1 Max. :12 Max. :1.0000
## Fehlerhaft_Fahrleistung
## Min. : 0
## 1st Qu.: 0
## Median : 0
## Mean : 4573
## 3rd Qu.: 0
## Max. :50491
str(Fahrzeuge_OEM2_Typ21_roh)
## Classes 'data.table' and 'data.frame': 512354 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Fahrzeug : chr "21-2-21-1" "21-2-21-2" "21-2-21-3" "21-2-21-4" ...
## $ Herstellernummer : int 2 2 2 2 2 2 2 2 2 2 ...
## $ Werksnummer : int 21 21 21 21 21 21 21 21 21 21 ...
## $ Fehlerhaft : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr NA NA NA NA ...
## $ Fehlerhaft_Fahrleistung : int 0 0 0 0 0 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14202 14202 15353 14203 14203 14203 14203 14203 14203 14204 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM2_Typ21_roh)
## V1 X1 ID_Fahrzeug Herstellernummer
## Min. : 1 Min. : 1 Length:512354 Min. :2
## 1st Qu.:128089 1st Qu.:128089 Class :character 1st Qu.:2
## Median :256178 Median :256178 Mode :character Median :2
## Mean :256178 Mean :256178 Mean :2
## 3rd Qu.:384266 3rd Qu.:384266 3rd Qu.:2
## Max. :512354 Max. :512354 Max. :2
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :21 Min. :0.00000 Length:512354 Min. : 0
## 1st Qu.:21 1st Qu.:0.00000 Class :character 1st Qu.: 0
## Median :21 Median :0.00000 Mode :character Median : 0
## Mean :21 Mean :0.09914 Mean : 905
## 3rd Qu.:21 3rd Qu.:0.00000 3rd Qu.: 0
## Max. :21 Max. :1.00000 Max. :227523
## Produktionsdatum_Origin_01011970 origin
## Min. :14202 Length:512354
## 1st Qu.:14938 Class :character
## Median :15670 Mode :character
## Mean :15668
## 3rd Qu.:16397
## Max. :17128
str(Fahrzeuge_OEM2_Typ22_roh)
## Classes 'data.table' and 'data.frame': 306490 obs. of 10 variables:
## $ V1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Fahrzeug : chr "22-2-21-1" "22-2-21-2" "22-2-21-3" "22-2-21-4" ...
## $ Herstellernummer : int 2 2 2 2 2 2 2 2 2 2 ...
## $ Werksnummer : int 21 21 21 21 21 21 21 21 21 21 ...
## $ Fehlerhaft : int 1 1 0 0 0 0 0 0 0 0 ...
## $ Fehlerhaft_Datum : chr "2010-03-18" "2010-03-18" NA NA ...
## $ Fehlerhaft_Fahrleistung : int 18841 18841 0 0 0 0 0 0 0 0 ...
## $ Produktionsdatum_Origin_01011970: int 14202 14202 14202 14203 14203 14203 14204 14204 14204 14204 ...
## $ origin : chr "01-01-1970" "01-01-1970" "01-01-1970" "01-01-1970" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Fahrzeuge_OEM2_Typ22_roh)
## V1 X1 ID_Fahrzeug Herstellernummer
## Min. : 1 Min. : 1 Length:306490 Min. :2
## 1st Qu.: 76623 1st Qu.: 76623 Class :character 1st Qu.:2
## Median :153246 Median :153246 Mode :character Median :2
## Mean :153246 Mean :153246 Mean :2
## 3rd Qu.:229868 3rd Qu.:229868 3rd Qu.:2
## Max. :306490 Max. :306490 Max. :2
## Werksnummer Fehlerhaft Fehlerhaft_Datum Fehlerhaft_Fahrleistung
## Min. :21.0 Min. :0.00000 Length:306490 Min. : 0
## 1st Qu.:22.0 1st Qu.:0.00000 Class :character 1st Qu.: 0
## Median :22.0 Median :0.00000 Mode :character Median : 0
## Mean :21.8 Mean :0.09872 Mean : 1776
## 3rd Qu.:22.0 3rd Qu.:0.00000 3rd Qu.: 0
## Max. :22.0 Max. :1.00000 Max. :137158
## Produktionsdatum_Origin_01011970 origin
## Min. :14202 Length:306490
## 1st Qu.:14946 Class :character
## Median :15670 Mode :character
## Mean :15670
## 3rd Qu.:16397
## Max. :17129
Tabelle_mit_ordentlicher_Struktur_Aufbereiten<-function(dat){
Id_Name_Index<- str_which(colnames(dat),regex("ID"))
Id_Name<-colnames(dat)[Id_Name_Index]
Produktionsdatum_Name_Index<- str_which(colnames(dat),regex("Pro"))
Produktionsdatum_Name<-colnames(dat)[Produktionsdatum_Name_Index]
Fehlerhaft_Name_Index<- str_which(colnames(dat),regex("t\\b"))
Fehlerhaft_Name<-colnames(dat)[Fehlerhaft_Name_Index]
Fehlerhaft_Datum_Name_Index<- str_which(colnames(dat),regex("t_D"))
Fehlerhaft_Datum_Name<-colnames(dat)[Fehlerhaft_Datum_Name_Index]
#zu erst wurde nur relevante Spakten gewählt
Relevant_Names<-c(Id_Name,
Produktionsdatum_Name,
Fehlerhaft_Name,
Fehlerhaft_Datum_Name)
dat<-dat%>%
dplyr::select(Relevant_Names)%>%
#Umbenennen
dplyr::rename(IDNummer=eply::unquote(Id_Name)) %>%
dplyr::rename(Produktionsdatum=eply::unquote(Produktionsdatum_Name)) %>%
dplyr::rename(Fehlerhaft=eply::unquote(Fehlerhaft_Name)) %>%
dplyr::rename(Fehlerhaft_Datum=eply::unquote(Fehlerhaft_Datum_Name)) %>%
#Umwandeln der Datentyp
dplyr::mutate(Fehlerhaft_Datum=lubridate::as_date(Fehlerhaft_Datum))%>%
dplyr::mutate(Fehlerhaft=base::as.logical(Fehlerhaft))%>%
dplyr::mutate(Produktionsdatum=lubridate::as_date(Produktionsdatum))
}
Fahrzeuge_OEM1_Typ11<-Tabelle_mit_ordentlicher_Struktur_Aufbereiten(Fahrzeuge_OEM1_Typ11_roh)
Fahrzeuge_OEM1_Typ12<-Tabelle_mit_ordentlicher_Struktur_Aufbereiten(Fahrzeuge_OEM1_Typ12_roh)
Fahrzeuge_OEM2_Typ21<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Fahrzeuge_OEM2_Typ21_roh)
Fahrzeuge_OEM2_Typ22<-Tabelle_mit_falschem_Produktionsdatum_Aufbereiten(Fahrzeuge_OEM2_Typ22_roh)
rm(Fahrzeuge_OEM1_Typ11_roh,
Fahrzeuge_OEM1_Typ12_roh,
Fahrzeuge_OEM2_Typ21_roh,
Fahrzeuge_OEM2_Typ22_roh)
In der Aufgabenstellung steht folgende Angabe:
Angabe 1 >Ein Fahrzeug gilt immer dann als ausgefallen, wenn ein verbautes Einzelteil, eine verbaute Komponente oder das gesamte Fahrzeug als fehlerhaft markiert ist. Diese Logik gilt entsprechend auch für Komponenten, die fehlerhafte Einzelteile enthalten.
Das heißt ,die Fehlerfolge Fahrzeug_ausgefallen stammt aus fünf Quellen(siehe Bild unten) :
gesamte Fahrzeug Fehlerhaft markiert
Motor Kyy ausgefallen
Sitz ausgefallen
Karosserie ausgefallen
Schaltung ausgefallen
Qulle 1 ist auf Fahrzeugebene, die Fehlerinformation der Fahrzeug ist nach Fahrzeugtype separate in 4 Tabelle protokolliert.
Quell 2 bis 5 sind 4 Zweige auf Komponentenebene.Jeder Fahrzeug besteht aus Komponenten.Aber nur Fehler von 4 Komponente sind in Datenbank protokolliert, nämlich Motor,Sitze ,Karosserie,Schaltung. theoretische sollen Unterebene(Teilebene) von aller Komponenten betrachtet werden. Aber das Management des Konzerns hat folgende Strategie:
Momentan versuchen die Automobilhersteller, trotz negativer Berichterstattung über Dieselfahrzeuge, Kunden für Autos mit Dieselmotoren zu gewinnen. Ein oft verwendetes Argument ist die Langlebigkeit von Dieselmotoren, die deutlich größer als die Lebensdauer der Benzinmotoren sein soll. Das Management beauftragt Sie, diese Behauptung zu überprüfen um mit der Aussage künftig werben zu können. Überprüfen Sie die Aussage über die Langlebigkeit von Dieselmotoren durch einen Vergleich mit Benzinmotoren.
Deswegen wollen wir nicht,dass sich die Ergebnis der Fehleranalyse durch Fehlerursachen von anderen Komponenten stören lässt. Die Umfang von Analyse wird so eingegrenzt: Wir betrachten markierte Fehler auf Fahrzeugen, markierte Fehler auf Motoren und markierte Fehler auf Teil,die in Motor verbaut wurden.
Motor Kyy repräsentiert Motor K1BE1,K1BE2,K1DI1,K1DI2
Teil xx repräsentiert z.B Teil T_01,T_02bis zu T10
# Wir kümmern uns nur um die Abbildung von Motor zu Fahrzeug
str(Bestandteile_Fahrzeuge_OEM1_Typ11_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 1977164 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Karosserie: chr "K4-112-1121-3" "K4-112-1121-4" "K4-112-1121-7" "K4-112-1121-9" ...
## $ ID_Schaltung : chr "K3SG1-105-1051-32" "K3SG1-105-1051-141" "K3SG1-105-1051-106" "K3SG1-105-1051-21" ...
## $ ID_Sitze : chr "K2LE1-109-1091-2" "K2ST1-109-1092-5" "K2ST1-109-1092-57" "K2ST1-109-1092-91" ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_Karosserie = col_character(),
## .. ID_Schaltung = col_character(),
## .. ID_Sitze = col_character(),
## .. ID_Motor = col_character(),
## .. ID_Fahrzeug = col_character()
## .. )
summary(Bestandteile_Fahrzeuge_OEM1_Typ11_roh)
## X1 ID_Karosserie ID_Schaltung ID_Sitze
## Min. : 1 Length:1977164 Length:1977164 Length:1977164
## 1st Qu.: 494292 Class :character Class :character Class :character
## Median : 988583 Mode :character Mode :character Mode :character
## Mean : 988583
## 3rd Qu.:1482873
## Max. :1977164
## ID_Motor ID_Fahrzeug
## Length:1977164 Length:1977164
## Class :character Class :character
## Mode :character Mode :character
##
##
##
str(Bestandteile_Fahrzeuge_OEM1_Typ12_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 408096 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Karosserie: chr "K5-112-1122-1" "K5-112-1122-11" "K5-112-1122-2" "K5-112-1122-3" ...
## $ ID_Schaltung : chr "K3SG1-105-1051-4" "K3AG1-105-1051-9" "K3AG1-105-1051-23" "K3AG1-106-1061-66" ...
## $ ID_Sitze : chr "K2ST1-109-1092-1" "K2ST1-109-1092-16" "K2ST1-109-1092-21" "K2ST1-109-1092-70" ...
## $ ID_Motor : chr "K1BE1-101-1011-90" "K1BE1-101-1011-2" "K1BE1-101-1011-8" "K1BE1-101-1011-11" ...
## $ ID_Fahrzeug : chr "12-1-12-1" "12-1-12-2" "12-1-12-3" "12-1-12-4" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_Karosserie = col_character(),
## .. ID_Schaltung = col_character(),
## .. ID_Sitze = col_character(),
## .. ID_Motor = col_character(),
## .. ID_Fahrzeug = col_character()
## .. )
summary(Bestandteile_Fahrzeuge_OEM1_Typ12_roh)
## X1 ID_Karosserie ID_Schaltung ID_Sitze
## Min. : 1 Length:408096 Length:408096 Length:408096
## 1st Qu.:102025 Class :character Class :character Class :character
## Median :204049 Mode :character Mode :character Mode :character
## Mean :204049
## 3rd Qu.:306072
## Max. :408096
## ID_Motor ID_Fahrzeug
## Length:408096 Length:408096
## Class :character Class :character
## Mode :character Mode :character
##
##
##
str(Bestandteile_Fahrzeuge_OEM2_Typ21_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 512354 obs. of 6 variables:
## $ X1 : num 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Karosserie: chr "K6-113-1132-1" "K6-113-1132-2" "K6-113-1132-8" "K6-113-1132-9" ...
## $ ID_Schaltung : chr "K3AG2-108-1082-10" "K3AG2-108-1082-6" "K3AG2-105-1051-13" "K3AG2-108-1082-16" ...
## $ ID_Sitze : chr "K2ST2-109-1092-44" "K2ST2-109-1092-42" "K2ST2-109-1092-74" "K2ST2-109-1092-31" ...
## $ ID_Motor : chr "K1BE2-101-1011-1" "K1DI2-103-1031-1" "K1BE2-101-1011-4" "K1BE2-101-1011-5" ...
## $ ID_Fahrzeug : chr "21-2-21-1" "21-2-21-2" "21-2-21-4" "21-2-21-5" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. ID_Karosserie = col_character(),
## .. ID_Schaltung = col_character(),
## .. ID_Sitze = col_character(),
## .. ID_Motor = col_character(),
## .. ID_Fahrzeug = col_character()
## .. )
summary(Bestandteile_Fahrzeuge_OEM2_Typ21_roh)
## X1 ID_Karosserie ID_Schaltung ID_Sitze
## Min. : 1 Length:512354 Length:512354 Length:512354
## 1st Qu.:128089 Class :character Class :character Class :character
## Median :256178 Mode :character Mode :character Mode :character
## Mean :256178
## 3rd Qu.:384266
## Max. :512354
## ID_Motor ID_Fahrzeug
## Length:512354 Length:512354
## Class :character Class :character
## Mode :character Mode :character
##
##
##
str(Bestandteile_Fahrzeuge_OEM2_Typ22_roh)
## Classes 'data.table' and 'data.frame': 306490 obs. of 6 variables:
## $ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
## $ ID_Karosserie: chr "K7-114-1142-1" "K7-114-1142-2" "K7-114-1142-5" "K7-114-1142-8" ...
## $ ID_Schaltung : chr "K3AG2-108-1082-9" "K3AG2-108-1082-11" "K3AG2-108-1082-14" "K3AG2-108-1082-3" ...
## $ ID_Sitze : chr "K2ST2-109-1092-2" "K2ST2-109-1092-59" "K2ST2-109-1092-4" "K2ST2-109-1092-6" ...
## $ ID_Motor : chr "K1DI2-103-1031-2" "K1BE2-101-1011-2" "K1BE2-101-1011-3" "K1BE2-101-1011-10" ...
## $ ID_Fahrzeug : chr "22-2-21-1" "22-2-21-2" "22-2-21-3" "22-2-21-4" ...
## - attr(*, ".internal.selfref")=<externalptr>
summary(Bestandteile_Fahrzeuge_OEM2_Typ22_roh)
## X1 ID_Karosserie ID_Schaltung ID_Sitze
## Min. : 1 Length:306490 Length:306490 Length:306490
## 1st Qu.: 76623 Class :character Class :character Class :character
## Median :153246 Mode :character Mode :character Mode :character
## Mean :153246
## 3rd Qu.:229868
## Max. :306490
## ID_Motor ID_Fahrzeug
## Length:306490 Length:306490
## Class :character Class :character
## Mode :character Mode :character
##
##
##
Abbildung_Motor_zu_Fahrzeug11<-Bestandteile_Fahrzeuge_OEM1_Typ11_roh%>%
select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug12<-Bestandteile_Fahrzeuge_OEM1_Typ12_roh%>%
select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug21<-Bestandteile_Fahrzeuge_OEM2_Typ21_roh%>%
select("ID_Fahrzeug","ID_Motor")
Abbildung_Motor_zu_Fahrzeug22<-Bestandteile_Fahrzeuge_OEM2_Typ22_roh%>%
select("ID_Fahrzeug","ID_Motor")
anyNA(Abbildung_Motor_zu_Fahrzeug11)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug12)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug21)
## [1] FALSE
anyNA(Abbildung_Motor_zu_Fahrzeug22)
## [1] FALSE
rm(Bestandteile_Fahrzeuge_OEM1_Typ11_roh,
Bestandteile_Fahrzeuge_OEM1_Typ12_roh,
Bestandteile_Fahrzeuge_OEM2_Typ21_roh,
Bestandteile_Fahrzeuge_OEM2_Typ22_roh)
str(Zulassungen_alle_Fahrzeuge_roh)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 4 variables:
## $ X1 : num 408097 408098 1 2 3 ...
## $ IDNummer : chr "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
## $ Gemeinden: chr "DRESDEN" "DRESDEN" "LEIPZIG" "LEIPZIG" ...
## $ Zulassung: Date, format: "2009-01-01" "2009-01-01" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. IDNummer = col_character(),
## .. Gemeinden = col_character(),
## .. Zulassung = col_date(format = "")
## .. )
Zulassungen_alle_Fahrzeuge<-Zulassungen_alle_Fahrzeuge_roh %>%select("IDNummer","Zulassung")
str(Zulassungen_alle_Fahrzeuge)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 2 variables:
## $ IDNummer : chr "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
## $ Zulassung: Date, format: "2009-01-01" "2009-01-01" ...
## - attr(*, "spec")=
## .. cols(
## .. X1 = col_double(),
## .. IDNummer = col_character(),
## .. Gemeinden = col_character(),
## .. Zulassung = col_date(format = "")
## .. )
rm(Zulassungen_alle_Fahrzeuge_roh)
Das Ziel der Datentransformation ist, finalen Datensatz zu erstellen.
Und die Anforderung ist in Aufgabenstellung so angegeben:
Ermitteln Sie den Zeitraum zwischen Zulassungsdatum und Fehlerdatum aller Fahrzeuge, getrennt nach Motorisierungsart und Fahrzeugart. Visualisieren Sie Ihre Ergebnisse entsprechend Ihrer Zielgruppe. Ermöglichen Sie einen Vergleich zwischen den Fahrzeugtypen.
# die Tabelle von Fahrzeugen Zusammensetzen
Fahrzeug_alle<-bind_rows(list(
Fahrzeuge_OEM1_Typ11,
Fahrzeuge_OEM1_Typ12,
Fahrzeuge_OEM2_Typ21,
Fahrzeuge_OEM2_Typ22
))
dim(Fahrzeug_alle)
## [1] 3204104 4
# die Tabelle von Produktionsdatum aller Fahrzeugen auswählen
Fahrzeug_Produktionsdatum<-Fahrzeug_alle%>%
dplyr::select("IDNummer","Produktionsdatum")%>%
dplyr::rename(ID_Fahrzeug=IDNummer)
dim(Zulassungen_alle_Fahrzeuge)
## [1] 3204104 2
# die Tabelle von Motoren Zusammensetzen
Motor_alle<-bind_rows(list(
Komponente_K1BE1,
Komponente_K1BE2,
Komponente_K1DI1,
Komponente_K1DI2
))
dim(Motor_alle)
## [1] 3204104 4
# die Tabelle von Einzelteil Zusammensetzen
Einzelteil_alle<-bind_rows(list(
Einzelteil_T01,
Einzelteil_T02,
Einzelteil_T03,
Einzelteil_T04,
Einzelteil_T05,
Einzelteil_T06,
Einzelteil_T07,
Einzelteil_T08,
Einzelteil_T09,
Einzelteil_T10
))
dim(Einzelteil_alle)
## [1] 12816416 4
# die Tabelle von Abbildung_Teil_zu_Motor Zusammensetzen
# Abbildung:
# "ID_Teil"->"ID_Motor"
Abbildung_Teil_zu_Motor_alle<-bind_rows(list(
Abbildung_Teil_zu_Motor_K1BE1,
Abbildung_Teil_zu_Motor_K1BE2,
Abbildung_Teil_zu_Motor_K1DI1,
Abbildung_Teil_zu_Motor_K1DI2
))
dim(Abbildung_Teil_zu_Motor_alle)
## [1] 12816416 2
# die Tabelle von Abbildung_Motor_Fahrzeug Zusammensetzen
# Abbildung:
# "ID_Motor"->"ID_Fahrzeug"
Abbildung_Motor_zu_Fahrzeug_alle<-bind_rows(list(
Abbildung_Motor_zu_Fahrzeug11,
Abbildung_Motor_zu_Fahrzeug12,
Abbildung_Motor_zu_Fahrzeug21,
Abbildung_Motor_zu_Fahrzeug22
))
dim(Abbildung_Motor_zu_Fahrzeug_alle)
## [1] 3204104 2
#remove unuseable variables
rm(
Fahrzeuge_OEM1_Typ11,
Fahrzeuge_OEM1_Typ12,
Fahrzeuge_OEM2_Typ21,
Fahrzeuge_OEM2_Typ22,
Komponente_K1BE1,
Komponente_K1BE2,
Komponente_K1DI1,
Komponente_K1DI2,
Einzelteil_T01,
Einzelteil_T02,
Einzelteil_T03,
Einzelteil_T04,
Einzelteil_T05,
Einzelteil_T06,
Einzelteil_T07,
Einzelteil_T08,
Einzelteil_T09,
Einzelteil_T10,
Abbildung_Teil_zu_Motor_K1BE1,
Abbildung_Teil_zu_Motor_K1BE2,
Abbildung_Teil_zu_Motor_K1DI1,
Abbildung_Teil_zu_Motor_K1DI2,
Abbildung_Motor_zu_Fahrzeug11,
Abbildung_Motor_zu_Fahrzeug12,
Abbildung_Motor_zu_Fahrzeug21,
Abbildung_Motor_zu_Fahrzeug22
)
Auswirkung aus Einzelteilen
anyNA(Einzelteil_alle$Fehlerhaft)
## [1] FALSE
Auswirkung_Teil_auf_Motor<-Einzelteil_alle%>%
dplyr::rename(ID_Teil = IDNummer)%>%
dplyr::inner_join(Abbildung_Teil_zu_Motor_alle,by="ID_Teil")%>%
dplyr::group_by(ID_Motor)%>%
dplyr::summarise(Fehlerhaft_aus_Teilen=any(Fehlerhaft),
Fehlerhaft_Datum_aus_Teilen=lubridate::as_date(min(Fehlerhaft_Datum,na.rm = TRUE)))
str(Auswirkung_Teil_auf_Motor)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 3 variables:
## $ ID_Motor : chr "K1BE1-101-1011-1" "K1BE1-101-1011-10" "K1BE1-101-1011-100" "K1BE1-101-1011-1000" ...
## $ Fehlerhaft_aus_Teilen : logi TRUE FALSE TRUE FALSE FALSE FALSE ...
## $ Fehlerhaft_Datum_aus_Teilen: Date, format: "2009-09-30" NA ...
#rm(Auswirkung_Teil_auf_Motor)
Auswirkung aus Motoren
anyNA(Motor_alle$Fehlerhaft)
## [1] FALSE
Auswirkung_Motor_auf_Fahrzeug<-Motor_alle%>%
dplyr::rename(ID_Motor = IDNummer)%>%
dplyr::inner_join(Abbildung_Motor_zu_Fahrzeug_alle,by="ID_Motor")%>%
dplyr::select(Fehlerhaft,
Fehlerhaft_Datum,
ID_Fahrzeug,
ID_Motor
)%>%
dplyr::rename(Fehlerhaft_aus_Motor=Fehlerhaft,
Fehlerhaft_Datum_aus_Motor=Fehlerhaft_Datum)
str(Auswirkung_Motor_auf_Fahrzeug)
## 'data.frame': 3204104 obs. of 4 variables:
## $ Fehlerhaft_aus_Motor : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ Fehlerhaft_Datum_aus_Motor: Date, format: NA NA ...
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "12-1-12-1" "12-1-12-2" ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-90" "K1BE1-101-1011-2" ...
#rm(Auswirkung_Motor_auf_Fahrzeug)
Auswirkung aus Fahrzeug selbst
anyNA(Fahrzeug_alle$Fehlerhaft)
## [1] FALSE
Fahrzeug_alle_selbst<-Fahrzeug_alle%>%
dplyr::rename(ID_Fahrzeug=IDNummer,
Fehlerhaft_selbst=Fehlerhaft,
Fehlerhaft_Datum_selbst=Fehlerhaft_Datum,
Produktionsdatum_selbst=Produktionsdatum
)
str(Fahrzeug_alle_selbst)
## 'data.frame': 3204104 obs. of 4 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## $ Produktionsdatum_selbst: Date, format: "2008-11-18" "2008-11-18" ...
## $ Fehlerhaft_selbst : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ Fehlerhaft_Datum_selbst: Date, format: NA NA ...
Wenn einer der drei Ebene:
Ebene 1: Fahrzeug selbst
Ebene 2: Motor
Ebene 3: Einzelteil
fehlerhaft markiert, wird dieses Fahrzeug endgültig als Fehlerhaft markiert.
Und die endgültige Fehlerhaft_Datum wählen wir die früheste Datum aus drei Datum aus :
Datum1: Fehlerhaft_Datum der Fahrzeug selbst
Datum2: Fehlerhaft_Datum der Motor
Datum3: Fehlerhaft_Datum der in Motor verbauten Einzelteilen
Fahrzeug_alle_Fehler_aus_drei_Ebene<-Fahrzeug_alle_selbst%>%
dplyr::inner_join(Auswirkung_Motor_auf_Fahrzeug,by="ID_Fahrzeug")%>%
dplyr::inner_join(Auswirkung_Teil_auf_Motor,by="ID_Motor")
str(Fahrzeug_alle_Fehler_aus_drei_Ebene)
## 'data.frame': 3204104 obs. of 9 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## $ Produktionsdatum_selbst : Date, format: "2008-11-18" "2008-11-18" ...
## $ Fehlerhaft_selbst : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ Fehlerhaft_Datum_selbst : Date, format: NA NA ...
## $ Fehlerhaft_aus_Motor : logi FALSE FALSE FALSE FALSE TRUE FALSE ...
## $ Fehlerhaft_Datum_aus_Motor : Date, format: NA NA ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
## $ Fehlerhaft_aus_Teilen : logi TRUE TRUE FALSE TRUE FALSE TRUE ...
## $ Fehlerhaft_Datum_aus_Teilen: Date, format: "2010-04-09" "2010-06-08" ...
Fahrzeug_Fehler_komplett<-Fahrzeug_alle_Fehler_aus_drei_Ebene%>%
tidyr::gather(Fehlerhaft_selbst,
Fehlerhaft_aus_Motor,
Fehlerhaft_aus_Teilen,
key = "Ebene",
value = "Fehlerhaft"
)%>%
tidyr::gather(Fehlerhaft_Datum_selbst,
Fehlerhaft_Datum_aus_Motor,
Fehlerhaft_Datum_aus_Teilen,
key = "Datum_Typ",
value = "Fehlerhaft_Datum")%>%
dplyr::group_by(ID_Fahrzeug)%>%
dplyr::summarise(
Fehlerhaft=any(Fehlerhaft),
Fehlerhaft_Datum=min(Fehlerhaft_Datum,na.rm = TRUE)
)
#Die Ergebnis besitz dieselben Anzahl vom Einträgen im vergleich zu Zulassungsdatensatz
str(Fahrzeug_Fehler_komplett)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 3 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
## $ Fehlerhaft : logi TRUE FALSE FALSE FALSE FALSE TRUE ...
## $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
#rm(Fahrzeug_alle_Fehler_aus_drei_Ebene)
Bei Lebensdauerermittlung kümmern wir uns nur um die fehlerhafte Fahrzeuge. Für fehlerfreie Fahrzeuge existieren kein Variable Fehlerhaft_Datum( mit Wert NA)
Fahrzeuge_Lebensdauer<-Fahrzeug_Fehler_komplett%>%
dplyr::inner_join(Zulassungen_alle_Fahrzeuge,by=c("ID_Fahrzeug"="IDNummer"))%>%
dplyr::filter(Fehlerhaft==TRUE)%>%
dplyr::transmute(ID_Fahrzeug=ID_Fahrzeug,
Lebensdauer=time_length(interval(Zulassung,Fehlerhaft_Datum),unit = "day"))
anyNA(Fahrzeuge_Lebensdauer$Fehlerhaft)
## [1] FALSE
str(Fahrzeuge_Lebensdauer)
## Classes 'tbl_df', 'tbl' and 'data.frame': 1789120 obs. of 2 variables:
## $ ID_Fahrzeug: chr "11-1-11-1" "11-1-11-100000" "11-1-11-1000000" "11-1-11-1000003" ...
## $ Lebensdauer: num 463 533 444 35 245 422 422 500 37 74 ...
summary(Fahrzeuge_Lebensdauer)
## ID_Fahrzeug Lebensdauer
## Length:1789120 Min. : -13.0
## Class :character 1st Qu.: 201.0
## Mode :character Median : 397.0
## Mean : 315.7
## 3rd Qu.: 447.0
## Max. :3388.0
#rm(Fahrzeuge_Lebensdauer)
str(Fahrzeug_Fehler_komplett)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 3 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
## $ Fehlerhaft : logi TRUE FALSE FALSE FALSE FALSE TRUE ...
## $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
str(Fahrzeug_Produktionsdatum)
## 'data.frame': 3204104 obs. of 2 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-18" ...
str(Fahrzeuge_Lebensdauer)
## Classes 'tbl_df', 'tbl' and 'data.frame': 1789120 obs. of 2 variables:
## $ ID_Fahrzeug: chr "11-1-11-1" "11-1-11-100000" "11-1-11-1000000" "11-1-11-1000003" ...
## $ Lebensdauer: num 463 533 444 35 245 422 422 500 37 74 ...
str(Abbildung_Motor_zu_Fahrzeug_alle)
## Classes 'spec_tbl_df', 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 2 variables:
## $ ID_Fahrzeug: chr "11-1-11-1" "11-1-11-2" "11-1-11-3" "11-1-11-4" ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-12" "K1BE1-101-1011-38" "K1BE1-101-1011-97" ...
Datensatz_Halb_Final<-Fahrzeug_Fehler_komplett%>%
dplyr::inner_join(Fahrzeug_Produktionsdatum,by="ID_Fahrzeug")%>%
dplyr::left_join(Fahrzeuge_Lebensdauer,by="ID_Fahrzeug")%>%
dplyr::left_join(Abbildung_Motor_zu_Fahrzeug_alle,by="ID_Fahrzeug")%>%
dplyr::left_join(Zulassungen_alle_Fahrzeuge,by=c("ID_Fahrzeug"="IDNummer"))
str(Datensatz_Halb_Final)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 7 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
## $ Fehlerhaft : logi TRUE FALSE FALSE FALSE FALSE TRUE ...
## $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
## $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-19" ...
## $ Lebensdauer : num 463 NA NA NA NA 533 444 NA NA 35 ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-50" "K1BE1-104-1041-139" "K1BE1-104-1041-169" ...
## $ Zulassung : Date, format: "2009-01-01" "2009-01-01" ...
Dazu brauchen wir noch zusätzliche ableitende Spalten wie Fahrzeug_Typ, `Motor_Typ und Werksnummer der OEM
Motor_Typ<-c("Benzinmotor","Benzinmotor","Dieselmotor","Dieselmotor")
Motor_Benennung<-c("K1BE1","K1BE2","K1DI1","K1DI2")
Abbildung_Typ_Benennung_Motor<-data.table(Motor_Benennung,Motor_Typ)
Datensatz_Final<-Datensatz_Halb_Final%>%
dplyr::mutate(Fahrzeug_Typ=str_sub(ID_Fahrzeug,1,2))%>%
dplyr::mutate(Werksnummer_OEM=str_sub(ID_Fahrzeug,6,7))%>%
dplyr::mutate(Motor_Benennung=str_sub(ID_Motor,1,5))%>%
dplyr::left_join(Abbildung_Typ_Benennung_Motor,by="Motor_Benennung")
Die Datentyp von Variablen nachprüfen.
# die Datentype sind in Ordnung
str(Datensatz_Final)
## Classes 'tbl_df', 'tbl' and 'data.frame': 3204104 obs. of 11 variables:
## $ ID_Fahrzeug : chr "11-1-11-1" "11-1-11-10" "11-1-11-100" "11-1-11-1000" ...
## $ Fehlerhaft : logi TRUE FALSE FALSE FALSE FALSE TRUE ...
## $ Fehlerhaft_Datum: Date, format: "2010-04-09" NA ...
## $ Produktionsdatum: Date, format: "2008-11-18" "2008-11-19" ...
## $ Lebensdauer : num 463 NA NA NA NA 533 444 NA NA 35 ...
## $ ID_Motor : chr "K1BE1-101-1011-7" "K1BE1-101-1011-50" "K1BE1-104-1041-139" "K1BE1-104-1041-169" ...
## $ Zulassung : Date, format: "2009-01-01" "2009-01-01" ...
## $ Fahrzeug_Typ : chr "11" "11" "11" "11" ...
## $ Werksnummer_OEM : chr "11" "11" "11" "11" ...
## $ Motor_Benennung : chr "K1BE1" "K1BE1" "K1BE1" "K1BE1" ...
## $ Motor_Typ : chr "Benzinmotor" "Benzinmotor" "Benzinmotor" "Benzinmotor" ...
Beständigen, ob der Datensatz vollständig ist . und die NA-Wert treten auffällig in zwei Spalten:
Fehlerhaft_Datum
Lebensdauer
Für NAs in Variable Lebensdauer sieht es gut aus,weil die Anzahl von NA ist identisch wie Anzahl von fehlerfreie Fahrzeuge. Aber es wäre besser , der Variable Lebensdauer Werte zuordnen, die minimale zensierte Dauer (in Tag) bedeutet, nählich zeitliche Differenz zwischen Zulassung und Heute, weil wir so angenommen, dass die Datensätze im Datenbank ist immer aktuell. Wir haben es auch angemerkt, dass Negativ Werte in Variable Lebensdauer existieren.Dieses Problem beruhen auf die Tatsache,dass Fehler aus Motoren oder Einzelteilen schon vor Zulassungsdatum markiert(zensiert) wurden. Wir können die Negative Werte von Lebensdauer einfach auf Null setzen.
Für NAs in Variable Fehlerhaft_Datum sieht es gut aus,weil die Anzahl von NA ist identisch wie Anzahl von fehlerhaften Fahrzeuge.
#es gibt NA Werte in Datensatz
anyNA(Datensatz_Final)
## [1] TRUE
summary(Datensatz_Final)
## ID_Fahrzeug Fehlerhaft Fehlerhaft_Datum Produktionsdatum
## Length:3204104 Mode :logical Min. :2009-02-28 Min. :2008-11-18
## Class :character FALSE:1414984 1st Qu.:2013-07-18 1st Qu.:2010-11-24
## Mode :character TRUE :1789120 Median :2017-02-11 Median :2012-11-23
## Mean :NA Mean :2012-11-22
## 3rd Qu.:NA 3rd Qu.:2014-11-23
## Max. :NA Max. :2016-11-30
##
## Lebensdauer ID_Motor Zulassung Fahrzeug_Typ
## Min. : -13.0 Length:3204104 Min. :2009-01-01 Length:3204104
## 1st Qu.: 201.0 Class :character 1st Qu.:2011-02-23 Class :character
## Median : 397.0 Mode :character Median :2013-02-20 Mode :character
## Mean : 315.7 Mean :2013-02-03
## 3rd Qu.: 447.0 3rd Qu.:2015-02-20
## Max. :3388.0 Max. :2016-12-30
## NA's :1414984
## Werksnummer_OEM Motor_Benennung Motor_Typ
## Length:3204104 Length:3204104 Length:3204104
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
table(as.character(Datensatz_Final$Fehlerhaft))
##
## FALSE TRUE
## 1414984 1789120
#Negative Werte von `Lebensdauer` einfach auf Null setzen.
Datensatz_Final$Lebensdauer[which(Datensatz_Final$Lebensdauer<=0)]<-0
#NA-Wert von `Lebensdauer` mit zensierte Dauer nachfüllen
Datensatz_Final<-Datensatz_Final%>%
dplyr::mutate(Lebensdauer=if_else(is.na(Lebensdauer),time_length(interval(Zulassung,as_date(now())),unit = "day"),Lebensdauer))
# Datensatz ist bis jetzt entgültig sauber
summary(Datensatz_Final)
## ID_Fahrzeug Fehlerhaft Fehlerhaft_Datum Produktionsdatum
## Length:3204104 Mode :logical Min. :2009-02-28 Min. :2008-11-18
## Class :character FALSE:1414984 1st Qu.:2013-07-18 1st Qu.:2010-11-24
## Mode :character TRUE :1789120 Median :2017-02-11 Median :2012-11-23
## Mean :NA Mean :2012-11-22
## 3rd Qu.:NA 3rd Qu.:2014-11-23
## Max. :NA Max. :2016-11-30
## Lebensdauer ID_Motor Zulassung Fahrzeug_Typ
## Min. : 0 Length:3204104 Min. :2009-01-01 Length:3204104
## 1st Qu.: 382 Class :character 1st Qu.:2011-02-23 Class :character
## Median : 487 Mode :character Median :2013-02-20 Mode :character
## Mean :1317 Mean :2013-02-03
## 3rd Qu.:2379 3rd Qu.:2015-02-20
## Max. :4077 Max. :2016-12-30
## Werksnummer_OEM Motor_Benennung Motor_Typ
## Length:3204104 Length:3204104 Length:3204104
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
save(Datensatz_Final,file = "Finaler_Datensatz_08.RData")
Data_Balken<-Datensatz_Final%>%
dplyr::select(Fehlerhaft,Fahrzeug_Typ,Motor_Typ)%>%
dplyr::group_by(Fahrzeug_Typ,Motor_Typ)%>%
dplyr::summarise(n=n(),f_rate=sum(Fehlerhaft==TRUE)/n)%>%
tidyr::spread(Motor_Typ,f_rate)
p <- plot_ly(Data_Balken, x = ~Fahrzeug_Typ, y = ~Benzinmotor, type = 'bar', name = 'Benzinmotor') %>%
add_trace(y = ~Dieselmotor, name = 'Dieselmotor') %>%
layout(yaxis = list(title = 'Fehlerhäufigkeit'), barmode = 'group')
p
Wie in Balkendiagramm gezeigt,dass die Fehlerhäufigkeit von Dieselauto für aller Fahrzeugtyp(11,12,21,22) immer relativ gering als von Benzinauto sind.
Data_Boxplot<-Datensatz_Final%>%
dplyr::filter(Fehlerhaft==TRUE)%>%
dplyr::select(Lebensdauer,Fahrzeug_Typ,Motor_Typ)
fig <- plot_ly(Data_Boxplot, x = ~Fahrzeug_Typ, y = ~Lebensdauer, color = ~Motor_Typ, type = "box")%>%
layout(boxmode = "group")
fig